table of contents
SYMLINK(2) | Руководство программиста Linux | SYMLINK(2) |
ИМЯ¶
symlink - создать новое имя для файла
ОБЗОР¶
#include <unistd.h>
int symlink(const char *oldpath, const char *newpath);
Требования
макроса
тестирования
свойств
для glibc (см.
feature_test_macros(7)):
symlink():
ОПИСАНИЕ¶
symlink() создает символьную ссылку с именем newpath, которая содержит строку oldpath.
Символьные ссылки интерпретируются «на лету», как-будто бы содержимое ссылки было подставлено вместо пути, по которому идёт поиск файла или каталога.
Символьные ссылки могут содержать компоненты пути .., которые (если используются в начале ссылки) ссылаются на родительский каталог того каталога, в котором находится ссылка.
Символьная ссылка (также известная как «мягкая ссылка») может указывать как на существующий, так и на несуществующий файлы; в последнем случае такая ссылка называется повисшей (dangling).
Права доступа символьной ссылки не имеют значения; принадлежность определённому владельцу игнорируется при переходе по ссылке, но проверяется при удалении или переименовании ссылки, а также ссылки в каталог с установленным закрепляющим (sticky) битом (S_ISVTX).
Если newpath существует, то он не будет перезаписан.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
При успешном выполнении возвращается 0. В случае ошибки возвращается -1, а errno устанавливается в соответствующее значение.
ОШИБКИ¶
- EACCES
- Нет прав на запись в каталог, содержащийся в newpath, или в одном из каталогов в newpath не разрешён поиск (см. также path_resolution(7)).
- EEXIST
- newpath уже существует.
- EFAULT
- Значения oldpath и newpath указывают за пределы доступного адресного пространства.
- EIO
- Произошла ошибка ввода-вывода.
- ELOOP
- Во время определения newpath встретилось слишком много символьных ссылок.
- ENAMETOOLONG
- Слишком длинное значение аргумента oldpath или newpath.
- ENOENT
- Компонент пути newpath не существует или является повисшей символьной ссылкой.
- ENOMEM
- Недостаточное количество памяти ядра.
- ENOSPC
- На устройстве, содержащем файл, нет места для создания нового элемента каталога.
- ENOTDIR
- Компонент пути, использованный как каталог в newpath, в действительности таковым не является.
- EPERM
- Файловая система, содержащая newpath, не поддерживает создание символьных ссылок.
- EROFS
- newpath находится на файловой системе, доступной только для чтения.
СООТВЕТСТВИЕ СТАНДАРТАМ¶
SVr4, 4.3BSD, POSIX.1-2001.
ЗАМЕЧАНИЯ¶
Не выполняется проверка oldpath.
При удаление имени, на который ссылается символьная ссылка, произойдёт удаление файла (если только у него нет других жёстких ссылок). Если такое поведение нежелательно, используйте link(2).
СМОТРИТЕ ТАКЖЕ¶
ln(1), lchown(2), link(2), lstat(2), open(2), readlink(2), rename(2), symlinkat(2), unlink(2), path_resolution(7), symlink(7)
2010-09-20 | Linux |